using System;
using System.Data;
using System.Collections.Generic; //Aca esta el tipo de dato lista
using nmspDataWEB;
using nmspEDITORIAL;
using nmspLIBRO;
using nmspLIBROENINVENTARIO;
using nmspUSUARIO;

namespace nmspINVENTARIO
{
    //Clase inventario que hereda de libro en inventario
    public class Inventario
    {
        private nmspUSUARIO.Usuario ElUsuario;
        private nmspLIBROENINVENTARIO.LibroEnInventario ElLibroEnElInventario;
        private Database db_conexion = new Database(); //objeto que maneja las bases de datos

        //*****************
        //Constructor vacio
        public Inventario()
        {}

        //******************************
        //Constructor con objeto usuario
        public Inventario(nmspUSUARIO.Usuario UnUsuario)
        {
            this.ElUsuario = UnUsuario;
        }

        //******************************
        //Constructor con objeto usuario
        public Inventario(nmspUSUARIO.Usuario UnUsuario, nmspLIBROENINVENTARIO.LibroEnInventario UnLibroEnUnInventario)
        {
            this.ElUsuario = UnUsuario;
            this.ElLibroEnElInventario = UnLibroEnUnInventario;
        }

        //***********************************************************************************
        //Se retornara una lista inventario de todos los resultados que coincidan sin importar
        //de que usuario sea.
        public List<nmspINVENTARIO.Inventario> getBusquedaLibros(nmspLIBRO.Libro AlgunLibro)
        {
            //Esto se utilizara cuando tambien agregue la busqueda por editorial
            //int id_editorial_aux;
            //nmspEDITORIAL.Editorial EditorialAuxiliar;

            //Variables auxiliares que se utilizaran para traer y manipular los resultados 
            //parciales.
            nmspUSUARIO.Usuario ElUsuarioAuxiliar;
            nmspLIBROENINVENTARIO.LibroEnInventario ElLibroEnElInventarioAuxiliar;
            //Antes de retornar la lista debo agregar objetos
            List<nmspINVENTARIO.Inventario> ListaAuxiliar = new List<nmspINVENTARIO.Inventario>(); ;

            string sql;
            string sqlwhere;
            DataTable dttable = new DataTable();


            sqlwhere = "WHERE 1=1 ";
            if ((AlgunLibro.get_titulo()) != null)
                sqlwhere += "and Titulo like '%" + AlgunLibro.get_titulo() + "%' ";

            if ((AlgunLibro.getAutor()) != null)
                sqlwhere += "and Autor =" + AlgunLibro.getAutor() + "' ";


            sql = "SELECT tblLibros.Id, ";
            sql += "tblLibros.UserId ";
            sql += "FROM tblLibros ";
            sql += sqlwhere;

            //creo un tipo de dato tabla con el resultado del select 
            dttable = db_conexion.GetDataTable(sql);
            //Vuelco el resultado al tipo de datos rows 
            DataRow[] dtr = dttable.Select();

            foreach (DataRow row in dtr)
            {
                //Creo los objetos en base a lo retornado por el query.
                ElUsuarioAuxiliar = new Usuario((System.Guid)row["UserId"]);
                ElLibroEnElInventarioAuxiliar = new LibroEnInventario((int)row["Id"]);
                //Agrego los objetos a la lista de inventario.
                ListaAuxiliar.Add(new Inventario(ElUsuarioAuxiliar, ElLibroEnElInventarioAuxiliar));
            }

            return ListaAuxiliar;

        }


        
    }
}//namespace nmspINVENTARIO
